/**
 * Created:	2001-7-
 * By:		eeorange
 * About: 	uva 216 - Getting in Line
 * Status:	AC 0.116ms
 */

#include <cstdio>
#include <cstring>
#include <ctime>
#include <cmath>
#include <iostream>
using namespace std;

#define MAXN		10

int Points[MAXN][2];
double best;
int B[MAXN];	// best ans


double d(int p1[2], int p2[2]){
	double ans = (p1[0] - p2[0]) * (p1[0] - p2[0]);
	ans += (p1[1] - p2[1]) * (p1[1] - p2[1]);
	return sqrt(ans);
}

int first = 1;
void dfs(int n, int* A, int cur){	// A: ans
	if(cur == n){
		double sum = 0.0;
		for(int i=0; i < n-1; i++) sum += d(Points[A[i]], Points[A[i+1]]);
		
		if(first || best > sum){
			first = 0;
			best = sum;
			memcpy(B, A, n*sizeof(int));
		}
	}
	else for(int i=0; i<n; i++)		// check all possiblity
	{
		int ok = 1;
		for(int j=0; j<cur; j++)
			if(A[j] == i) ok = 0;
			
		if(ok){
			A[cur] = i;
			dfs(n, A, cur+1);
		}
	}
}

int main(){
	#ifndef ONLINE_JUDGE
		freopen("data.in", "r", stdin);
	#endif
	int count = 0;
	int n;
	while(scanf("%d", &n) && n)
	{
		for(int i=0; i<n; i++) scanf("%d%d", &Points[i][0], &Points[i][1]);
		
		first = 1;
		int A[10];
		dfs(n, A, 0);
		
		printf("**********************************************************\n");
		printf("Network #%d\n", ++count);
		for(int i=0; i<n-1; i++)
			printf("Cable requirement to connect (%d,%d) to (%d,%d) is %.2lf feet.\n",
				Points[B[i]][0], 
				Points[B[i]][1],
				Points[B[i+1]][0],
				Points[B[i+1]][1],
				d(Points[B[i]], Points[B[i+1]]) + 16);
		printf("Number of feet of cable required is %.2lf.\n", best+16*(n-1));
				
	}
	
	#ifndef ONLINE_JUDGE
		printf("\nTime used = %.3lf\n", (double)clock()/CLOCKS_PER_SEC);
		printf("****** END ******\n");
	#endif
	return 0;
}


